﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ArduinoSketch.Core
{

    public class ProjectFileArgs : EventArgs
    {
        private ProjectFileEntity _file;

        public ProjectFileEntity File
        {
            get { return _file; }
            set { _file = value; }
        }

        public ProjectFileArgs(ProjectFileEntity file)
        {
            _file = file;
        }
    }

    public class ProjectSelectedArgs : EventArgs
    {
        private ProjectEntity _project;

        public ProjectEntity Project
        {
            get { return _project; }
            set { _project = value; }
        }

        public ProjectSelectedArgs(ProjectEntity project)
        {
            _project = project;
        }
    }

    public interface ISolutionExplorer
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="solution"></param>
        void CreateSolutionView(SolutionEntity solution);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="project"></param>
        void CreateProjectView(ProjectEntity project);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="file"></param>
        void CreateFileView(ProjectFileEntity file);

        /// <summary>
        /// 
        /// </summary>
        void ClearSolution();

        /// <summary>
        /// 
        /// </summary>
        event EventHandler<ProjectFileArgs> OnExplorerSelected;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler<ProjectSelectedArgs> OnProjectSelected;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolNewSolutionClick;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolNewProjectClick;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolNewHeaderFileClick;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolNewSourceFileClick;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolNewExternalFileClick;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolRemoveFileClick;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolRemoveProjectClick;

        /// <summary>
        /// 
        /// </summary>
        event EventHandler OnToolExistingProjectClick;

        /// <summary>
        /// 
        /// </summary>
        string SelectedFileName { get; }

        /// <summary>
        /// 
        /// </summary>
        void RemoveSelectedNode();
    }
}
